package org.niux.aims.service.impl;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;

import org.niux.aims.dao.IAccountDAO;
import org.niux.aims.dao.IAuthDAO;
import org.niux.aims.dao.IEntitysDAO;
import org.niux.aims.models.Account;
import org.niux.aims.models.Auth;
import org.niux.aims.models.Entitys;
import org.niux.aims.service.IAuthService;
import org.niux.aims.vo.AuthVO;
import org.niux.aims.vo.EntityVO;
import org.springframework.stereotype.Repository;

/**
 * 
 * Copyright (c) 2009,niux<br>
 * All rights reserved.<br>
 * 
 * 文件名称：AuthService.java<br>
 * 摘    要：权限数据服务类<br>
 * <br>
 * 当前版本：<br>
 * 作    者：铭显 Email: <a href="mailto:liangmingxian@gmail.com">liangmingxian@gmail.com</a><br>
 * 完成日期：@since 2013-9-5<br>
 * <br>
 * 取代版本：<br>
 * 原作者  ：<br>
 * 完成日期：@since Oct 22, 2009<br>
 */
@Repository(value="authService")
public class AuthService implements IAuthService {

	@Resource(name="authDao")
	private IAuthDAO authDao;
	
	@Resource(name="accountDao")
	private IAccountDAO accountDao;
	
	@Resource(name="entityDao")
	private IEntitysDAO entityDao;
	
	/**
	 * 
	 * 方法概述：保存权限分配结果
	 * 描述：保存权限分配结果
	 * @param auths
	 * 返回类型：void
	 * 修改人：梁铭显
	 * 修改时间：2013-9-5
	 */
	public void save(List<AuthVO> auths){
		for (AuthVO authVO : auths) {
			Account account = accountDao.findById(authVO.getAccount().getId());
			Entitys entity = entityDao.findById(Integer.parseInt(authVO.getEntity().getId()));
			
			Auth auth = new Auth();
			auth.setAccount(account);
			auth.setEntitys(entity);
			
			authDao.save(auth);
		}
	}
	
	/**
	 * 
	 * 方法概述：根据账户ID获取权限分配数据
	 * 描述：根据账户ID获取权限分配数据
	 * @param accountid
	 * @return
	 * 返回类型：List<AuthVO>
	 * 修改人：梁铭显
	 * 修改时间：2013-9-5
	 */
	public List<AuthVO> findByAccount(int accountid){
		List<Auth> auths = authDao.findByAccount(accountid);
		
		List<AuthVO> authVos = new ArrayList<AuthVO>();
		
		for (Auth auth : auths) {
			EntityVO entity = new EntityVO();
			entity.setId(Integer.toString(auth.getEntitys().getId()));
			entity.setEntityCode(auth.getEntitys().getEntityCode());
			
			AuthVO authVo = new AuthVO();
			authVo.setEntity(entity);
			
			authVos.add(authVo);
		}
		
		return authVos;
	}
}
